/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ares.service.action;

import com.ares.service.bean.BeanAcciones;
import com.ares.service.bean.BeanCalificaciones;
import com.ares.service.bean.BeanCompetencia;
import com.ares.service.bean.BeanCualificaciones;
import com.ares.service.bean.BeanFormulario;
import com.ares.service.bean.BeanInfoEmpleado;
import com.ares.service.bean.BeanIntegral;
import com.ares.service.bean.BeanMeta;
import com.ares.service.bean.BeanMovilidad;
import com.ares.service.bean.BeanObjetivo;
import com.ares.service.bean.BeanPilar;
import com.ares.service.bean.BeanPlanAccion;
import com.ares.service.bean.BeanUserSub;
import com.ares.service.bean.BeanUsuario;
import com.ares.service.servicio.CompetenciaSapService_I;
import com.ares.service.servicio.EvaluacionSapService_I;
import com.ares.service.servicio.IntegralSapService_I;
import com.ares.service.servicio.PaqueteBusinessDelegate;
import com.ares.service.servicio.PlanAccionSapService_I;
import com.ares.service.servicio.UsuarioSapService_I;
import com.ares.service.util.Constantes;
import com.ares.service.util.Util;
import com.itextpdf.text.BadElementException;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import com.lowagie.text.pdf.PdfCell;

import java.awt.Color;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author electro
 */
public class ImprimirReporteConsolidado extends HttpServlet {
    double calificacionGlobal = 0.00;
    EvaluacionSapService_I evaluacionService = PaqueteBusinessDelegate.getEvaluacionSapService_I();
    UsuarioSapService_I UsuarioSubor = PaqueteBusinessDelegate.getUsuarioSapService_I();
    CompetenciaSapService_I servicioCompetencia = PaqueteBusinessDelegate.getCompetenciaSapService_I();
    IntegralSapService_I integralService = PaqueteBusinessDelegate.getIntegralSapService_I();
    String periodo = "";
    BeanUsuario evaluador = new BeanUsuario();
    BeanFormulario formulario = new BeanFormulario();
    BeanInfoEmpleado beanInfoEmpleado = new BeanInfoEmpleado();

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException, DocumentException {    
        try {
            Document document = new Document(PageSize.A4.rotate()); //.rotate para que este horizontal (landscape)
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            PdfWriter.getInstance(document, baos);
            document.open();
            document.add(createTitulo("GESTIÓN DE DESEMPEÑO", ""));
            document.add(createFooterCaratula(request));
            //agrego la segunda pagina que es puro floro
            document.newPage();
            document.add(createSegundaHoja());            
            //AGREGO LA EVALUACION DE OBJETIVOS
            document.newPage();
            document.add(createTituloYSubtitulo("GESTIÓN DE DESEMPEÑO", "PLANIFICACIÓN Y EVALUACIÓN DE OBJETIVOS"));
            document.add(createCabeceraGestionDesempenio());
            document.add(createDetalleGestiondeDesempenio());
            document.add(createFooter());
            document.add(createCondiciones());
            //AGREGO LA EVALUACION DE COMPETENCIAS
            document.newPage();
            document.add(createTituloYSubtitulo("  GESTIÓN DE DESEMPEÑO", " EVALUACIÓN DE COMPETENCIAS"));
            document.add(createCabeceraCompetencias());
            document.add(createDetalleCompetencias());
            //AGREGO LA EVALUACION INTEGRAL
            document.newPage();
            document.add(createTituloYSubtitulo("  GESTIÓN DE DESEMPEÑO", " EVALUACIÓN INTEGRAL"));
            document.add(createCabeceraCompetencias());
            document.add(createDetalleEvaluacionIntegral());
            //AGREGO EL PLAN DE ACCION
            document.newPage();
            document.add(createTituloYSubtitulo("  GESTIÓN DE DESEMPEÑO", " PLAN DE ACCIÓN"));
            document.add(createCabeceraCompetencias());
            document.add(createDetallePlanAccion());

            document.close();
            response.setHeader("Expires", "0");
            response.setHeader("Cache-Control",
                    "must-revalidate, post-check=0, pre-check=0");
            response.setHeader("Pragma", "public");
            response.setContentType("application/pdf");
            response.setContentLength(baos.size());
            ServletOutputStream os = response.getOutputStream();
            baos.writeTo(os);
            os.flush();
            os.close();
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally {
        }
    }

    public PdfPTable createTitulo(String titulo, String dtTitulo) throws DocumentException, BadElementException, IOException {
        String fs = File.separator;
        //OBTENGO LA RUTA REAL DONDE ESTA EL PROYECTO
        String ruta = getServletContext().getRealPath(fs);
        PdfPTable table = new PdfPTable(2);
        table.setWidths(new int[]{5, 5});
        table.setWidthPercentage(60);
        PdfPCell cell;
        Font font = new Font(CreateFont(), 10, Font.NORMAL, BaseColor.WHITE);
        cell = new PdfPCell(new Phrase(String.format(
                "%s", titulo), font));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        cell.setColspan(2);
        cell.setFixedHeight(32f);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(""));
        cell.setBackgroundColor(new BaseColor(178, 178, 176));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(2);
        cell.setFixedHeight(2f);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(""));
        cell.setBackgroundColor(new BaseColor(249, 184, 20));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(2);
        table.addCell(cell);

        try {
            Image foto1 = Image.getInstance(ruta + "images" + fs + "logo1.gif");
            foto1.scalePercent(75.0f);
            //PARA CENTRAR LA IMAGEN
            foto1.setAlignment(Image.ALIGN_MIDDLE);
            cell = new PdfPCell();
            cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
            cell.setHorizontalAlignment(PdfPCell.ALIGN_MIDDLE);
            cell.setColspan(2);
            cell.addElement(foto1);
            cell.setFixedHeight(300f);
            table.addCell(cell);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return table;
    }

    public PdfPTable createTituloYSubtitulo(String titulo, String dtTitulo) throws DocumentException, BadElementException, IOException {
        PdfPTable table = new PdfPTable(2);
        table.setWidths(new int[]{5, 5});
        table.setWidthPercentage(100);
        PdfPCell cell;

        Font font = new Font(CreateFont(), 10, Font.NORMAL, BaseColor.WHITE);

        cell = new PdfPCell(new Phrase(String.format(
                "%s", titulo), font));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        cell.setColspan(2);
        cell.setFixedHeight(32f);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(""));
        cell.setBackgroundColor(new BaseColor(178, 178, 176));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(2);
        cell.setFixedHeight(2f);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(""));
        cell.setBackgroundColor(new BaseColor(249, 184, 20));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(2);
        cell.setFixedHeight(2f);
        table.addCell(cell);

        font = new Font(CreateFont(), 8, Font.NORMAL, BaseColor.WHITE);
        cell = new PdfPCell(new Phrase(String.format("%s", dtTitulo), font));
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        cell.setColspan(4);
        cell.setFixedHeight(16f);
        table.addCell(cell);

        return table;
    }

    public PdfPTable createCabeceraGestionDesempenio() throws DocumentException, IOException, Exception {
        PdfPTable table = new PdfPTable(6);
        table.setWidths(new int[]{2, 7, 2, 7, 2, 7});
        table.setWidthPercentage(100);
        table.setHorizontalAlignment(PdfPTable.ALIGN_LEFT);

        PdfPCell cell;

        Font font = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);

        cell = new PdfPCell(new Phrase("Evaluado :", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        Font font2 = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase(formulario.getStrNom_Empleado() + " " + formulario.getStrApellido_Empleado(), font2));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Evaluador :", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(evaluador.getStrName(), font2));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Área :", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(formulario.getStrArea_Empleado(), font2));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);


        //SEGUNDA FILA PARA DAR ESPACIO EN BLANCO ENTRE LAS DOS FILAS
        cell = new PdfPCell(new Phrase("", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setFixedHeight(3f);
        cell.setColspan(6);
        table.addCell(cell);

        //TERCERA FILA
        cell = new PdfPCell(new Phrase("Puesto :", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(formulario.getStrPuesto_Empleado(), font2));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Puesto :", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(evaluador.getStrPuesto(), font2));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(2);
        table.addCell(cell);

        //TERCERA FILA
        cell = new PdfPCell(new Phrase("", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(6);
        cell.setFixedHeight(10f);
        table.addCell(cell);

        return table;
    }

    public PdfPTable createDetalleGestiondeDesempenio() throws DocumentException, Exception {
        double sumaPeso = 0.0;
        int imprimePilar = 0; //para hacer el rowspan cuando un pilar esta arriba de un objetivo

        List<BeanPilar> lstPilar = null;
        List<BeanObjetivo> lstObj = null;
        List<BeanMeta> lstMeta = null;
        String idEmpleado = formulario.getStrID_EMPLEADO().toString();
        //Antes obtenia en las competencias, se cambio por observaciones el 28-09-11
        beanInfoEmpleado = evaluacionService.getInformacionUsuario(formulario.getStrID_EMPLEADO(), periodo);

        if(beanInfoEmpleado.getStrEtapa().equals("E3") || beanInfoEmpleado.getStrEtapa().equals("E4")){
//            System.out.println("la etapa es 3 o 4");
            lstPilar = evaluacionService.getLstPilarUsuarioAnterior(idEmpleado, periodo, beanInfoEmpleado.getStrEtapa());
            lstObj = evaluacionService.getLstObjetivoUsuarioVeri(idEmpleado, periodo, beanInfoEmpleado.getStrEtapa());
            lstMeta = evaluacionService.getLstMetaUsuarioVeriSAP(idEmpleado, periodo, beanInfoEmpleado.getStrEtapa());
        }

        PdfPTable table = new PdfPTable(9);
        table.setWidths(new int[]{2, 8, 7, 7, 7, 2, 2, 2, 2});
        table.setWidthPercentage(100);

        PdfPCell cell;
        cell = new PdfPCell(new Phrase(""));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(2);
        table.addCell(cell);

        Font fontcabeceraTabla = new Font(CreateFont(), 9, Font.BOLD, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("ACEPTABLE", fontcabeceraTabla));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("TARGET", fontcabeceraTabla));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("EXCELENTE", fontcabeceraTabla));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("PESO", fontcabeceraTabla));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("POND.", fontcabeceraTabla));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("EVAL.", fontcabeceraTabla));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("TOT.", fontcabeceraTabla));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        Font font;

        for (BeanPilar beanPilar : lstPilar) {
            font = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.WHITE);
            cell = new PdfPCell(new Phrase("" + beanPilar.getStrDes(), font));
            cell.setBackgroundColor(new BaseColor(0, 0, 0));
            cell.setColspan(5);
            table.addCell(cell);
            imprimePilar = 1;

            cell = new PdfPCell(new Phrase(Util.AgregarCeros(beanPilar.getDblValor()) + "%", font));
            cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
            cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
            cell.setBackgroundColor(new BaseColor(0, 0, 0));
            table.addCell(cell);

            cell = new PdfPCell(new Phrase(""));
            cell.setColspan(3);

            if(imprimePilar == 1){
                cell.setRowspan(2);
            }

            table.addCell(cell);

            font = new Font(CreateFont(), 8, Font.NORMAL, BaseColor.BLACK);

            for (BeanObjetivo objetivo : lstObj) {
                if (objetivo.getStridpilar().equals(beanPilar.getStrCod())) {
                    cell = new PdfPCell(new Phrase("" + objetivo.getStrDesc_indice(), font));
                    cell.setBackgroundColor(new BaseColor(249, 184, 20));
                    table.addCell(cell);

                    cell = new PdfPCell(new Phrase("" + objetivo.getStrdesobjetivo(), font));
                    cell.setBackgroundColor(new BaseColor(249, 184, 20));
                    cell.setColspan(4);
                    table.addCell(cell);

                    cell = new PdfPCell(new Phrase(Util.AgregarCeros(objetivo.getDblvalor()) + "%", font));
                    cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                    cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                    cell.setBackgroundColor(new BaseColor(249, 184, 20));
                    table.addCell(cell);

                    if(imprimePilar == 0){
                        cell = new PdfPCell(new Phrase(""));
                        cell.setColspan(3);
                        table.addCell(cell);
                    }

                    imprimePilar = 0;

                    for (BeanMeta meta : lstMeta) {
                    	//BaseColor(228, 228, 228)
                        if (meta.getStridobjetivo().equals(objetivo.getStridobjetivo())) {
                            sumaPeso += meta.getDblCalc();
                            
                            if (meta.getIntflag_org() == 1) {
                                cell = new PdfPCell(new Phrase("" + meta.getStrDesc_indice(), font));
                                cell.setBackgroundColor(new BaseColor(209, 209, 209));
                                table.addCell(cell);

                                cell = new PdfPCell(new Phrase("" + meta.getStrdesmeta(), font));
                                cell.setBackgroundColor(new BaseColor(209, 209, 209));
                                table.addCell(cell);

                                cell = new PdfPCell(new Phrase("" + meta.getStraceptable(), font));
                                cell.setBackgroundColor(new BaseColor(209, 209, 209));
                                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                                table.addCell(cell);

                                cell = new PdfPCell(new Phrase("" + meta.getStrmejorado(), font));
                                cell.setBackgroundColor(new BaseColor(209, 209, 209));
                                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                                table.addCell(cell);

                                cell = new PdfPCell(new Phrase("" + meta.getStrexcelente(), font));
                                cell.setBackgroundColor(new BaseColor(209, 209, 209));
                                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                                table.addCell(cell);

                                cell = new PdfPCell(new Phrase(Util.AgregarCeros(meta.getDblvalor()) + "%", font));
                                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                                cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                                table.addCell(cell);
                            }
                            else {
                                cell = new PdfPCell(new Phrase("" + meta.getStrDesc_indice(), font));
                                table.addCell(cell);
                                cell = new PdfPCell(new Phrase("" + meta.getStrdesmeta(), font));
                                table.addCell(cell);

                                cell = new PdfPCell(new Phrase("" + meta.getStraceptable(), font));
                                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                                table.addCell(cell);

                                cell = new PdfPCell(new Phrase("" + meta.getStrmejorado(), font));
                                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                                table.addCell(cell);

                                cell = new PdfPCell(new Phrase("" + meta.getStrexcelente(), font));
                                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                                table.addCell(cell);

                                cell = new PdfPCell(new Phrase(Util.AgregarCeros(meta.getDblvalor()) + "%", font));
                                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                                cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                                table.addCell(cell);
                            }

                            //Falta actualizar esos campos
                            cell = new PdfPCell(new Phrase(Util.AgregarCeros(meta.getDblCalc()) + "%", font));
                            cell.setBackgroundColor(new BaseColor(209, 209, 209));
                            cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                            cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                            table.addCell(cell);

                            cell = new PdfPCell(new Phrase(meta.getStrEvaluacion() + "%", font));
                            cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                            cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                            table.addCell(cell);

                            cell = new PdfPCell(new Phrase(meta.getStrTotal() + "%", font));
                            cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                            cell.setBackgroundColor(new BaseColor(209, 209, 209));
                            cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                            table.addCell(cell);

                            try {
                            	calificacionGlobal = calificacionGlobal + Double.parseDouble(meta.getStrTotal());	
							} catch (Exception e) {
								// TODO: handle exception
							}
                            
                        }
                    }
                }
            }
        }

        cell = new PdfPCell(new Phrase(""));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(6);
        table.addCell(cell);

        font = new Font(CreateFont(), 8, Font.NORMAL, BaseColor.BLACK);

        cell = new PdfPCell(new Phrase(Util.AgregarCeros(sumaPeso) + "%", font));
        cell.setBackgroundColor(new BaseColor(209, 209, 209));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("", font));
        cell.setBackgroundColor(new BaseColor(209, 209, 209));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(Util.AgregarCeros(Util.Redondear2Decimales(calificacionGlobal)) + "%", font));
        cell.setBackgroundColor(new BaseColor(209, 209, 209));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        return table;
    }

    public PdfPTable createFooterCaratula(HttpServletRequest request) throws DocumentException, Exception {
        HttpSession session = request.getSession();
        formulario = (BeanFormulario) session.getAttribute("formulario");
        evaluador = evaluacionService.getEvaluador(formulario.getStrID_EMPLEADO().toString(), periodo, "E4");

        PdfPTable table = new PdfPTable(2);
        table.setWidths(new int[]{5, 5});
        table.setWidthPercentage(60);

        PdfPCell cell;

        Font font = new Font(CreateFont(), 9, Font.NORMAL, BaseColor.WHITE);
        cell = new PdfPCell(new Phrase(String.format("%s", "EVALUACIÓN DE OBJETIVOS Y COMPETENCIAS"), font));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        cell.setColspan(2);
        cell.setFixedHeight(20f);
        table.addCell(cell);

        Font font1 = new Font(CreateFont(), 8, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("Periodo a evaluar: desde 01/01/" + periodo +"   hasta   31/12/"+ periodo, font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setColspan(2);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("EVALUADO", font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("EVALUADOR", font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Código:  " + formulario.getStrID_EMPLEADO(), font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Código:  " + formulario.getStrID_EVALUADOR(), font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Apellido:  " + formulario.getStrApellido_Empleado().toUpperCase(), font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Apellido:  " + evaluador.getStrApe_Pat_EMP().toUpperCase() + " " + evaluador.getStrApe_Mat_EMP().toUpperCase(), font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Nombre:  " + formulario.getStrNom_Empleado().toUpperCase(), font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Nombre:  " + evaluador.getStrNombre_EMP().toUpperCase(), font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Posición:  " + formulario.getStrPuesto_Empleado().toUpperCase(), font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Posición:  " + evaluador.getStrPuesto().toUpperCase(), font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Área:  " + formulario.getStrArea_Empleado().toUpperCase(), font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Área:  " + evaluador.getStrArea().toUpperCase(), font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        table.addCell(cell);

        return table;
    }

    public PdfPTable createFooter() throws DocumentException {
        PdfPTable table = new PdfPTable(2);
        table.setWidths(new int[]{2, 4});
        table.setWidthPercentage(30);
        table.setHorizontalAlignment(PdfPTable.ALIGN_LEFT);

        PdfPCell cell;

        Font font = new Font(CreateFont(), 8, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase(""));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(2);
        cell.setFixedHeight(30f);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Calificación Global ", font));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(Util.AgregarCeros(Util.Redondear2Decimales(calificacionGlobal)) + "%", font));
        cell.setFixedHeight(15f);
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(2);
        cell.setFixedHeight(30f);
        table.addCell(cell);
        calificacionGlobal = 0.00;
        return table;
    }

    public PdfPTable createCondiciones() throws DocumentException {
        PdfPTable table = new PdfPTable(2);
        table.setWidths(new int[]{1, 3});
        table.setWidthPercentage(35);
        table.setHorizontalAlignment(PdfPTable.ALIGN_LEFT);

        PdfPCell cell;
        Font font = new Font(CreateFont(), 8, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase(" < 80% ", font));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(" 1- No aceptable ", font));
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(" 80% - 94.99% ", font));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(" 2- Aceptable", font));
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(" 95% - 104.99%", font));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(" 3- Efectivo", font));
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(" 105% - más ", font));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(" 4- Excelente", font));
        table.addCell(cell);

        return table;
    }

    public PdfPTable createSubTitulo(String titulo, String dtTitulo) throws DocumentException, BadElementException, IOException {
        PdfPTable table = new PdfPTable(1);
        table.setWidths(new int[]{1});
        table.setWidthPercentage(100);
        PdfPCell cell;
        Font font = new Font(CreateFont(), 10, Font.NORMAL, BaseColor.WHITE);
        cell = new PdfPCell(new Phrase(String.format(
                "%s", titulo), font));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        cell.setFixedHeight(32f);
        table.addCell(cell);
        return table;
    }

    /****************** SEGUNDA HOJA******************************/
    public PdfPTable createSegundaHoja() throws DocumentException, IOException {
       PdfPTable table = new PdfPTable(1);
        table.setWidths(new int[]{1});
        table.setWidthPercentage(60);
        PdfPCell cell;

        //PARA CREAR EL TITULO
        Font font2 = new Font(CreateFont(), 10, Font.NORMAL, BaseColor.WHITE);
        cell = new PdfPCell(new Phrase(String.format(
                "%s", "GESTIÓN DE DESEMPEÑO"), font2));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        cell.setFixedHeight(32f);
        table.addCell(cell);

        //AGREGO LA LINEA PLOMA DESPUES DEL TITULO
        cell = new PdfPCell(new Phrase(""));
        cell.setBackgroundColor(new BaseColor(178, 178, 176));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setFixedHeight(2f);
        table.addCell(cell);

        //AGREGO LA LINEA AMARILLA
        cell = new PdfPCell(new Phrase(""));
        cell.setBackgroundColor(new BaseColor(249, 184, 20));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setFixedHeight(3f);
        table.addCell(cell);

        //Llamo para crear el primer subtitulo       
        cell = new PdfPCell(new Phrase(String.format(
                "%s", "GUÍA GENERAL"), font2));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        cell.setFixedHeight(20f);
        table.addCell(cell);

        Font font1 = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        Font font3 = new Font(CreateFont(), 7, Font.BOLD, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("\n-  La gestión de desempeño es la herramienta más importante para el desarrollo de los"
                + " Colaboradores, que permite medir la contribución de cada uno de ellos, al logro de los objetivos del negocio"
                + " y permite establecer las acciones enfocadas a su desarrollo individual.\n-  Los objetivos y competencias se deben planificar entre enero y febrero de cada año,"
                + " recibir acompañamiento continuo y de ser necesario realizar   ajustes en julio, para luego verificar su "
                + "cumplimiento entre enero y marzo del siguiente año.\n\n", font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(String.format(
                "%s", "GUÍA PARA LA REUNIÓN DE RETROALIMENTACIÓN"), font2));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        cell.setFixedHeight(20f);
        table.addCell(cell);

//        Font font1 = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("\nEn esta reunión se validará el cumplimiento de los objetivos y competencias del año"
                + " anterior y a la vez se planificará los objetivos del año en curso. Para ello tenemos algunas recomendaciones: \n\n"
                + " -  Se recomienda que el colaborador prepare con la debida anticipación los posibles objetivos a alcanzar, revise las"
                + " competencias y el nivel de   comportamientos requerido para su posición, pensando en ejemplos concretos que evidencien"
                + " su calificación.\n-  Se recomienda que el jefe reuna información necesaria para la planificación de objetivos tales como: Plan"
                + " Estratégico, prioridades del Área y del   equipo. Asimismo que prepare un borrador del plan de acción individual que propondrá"
                + " al colaborador para trabajar las oportunidades de mejora.\n ", font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(String.format(
                "%s", "GUÍA PARA OBJETIVOS Y COMPETENCIAS"), font2));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        cell.setFixedHeight(20f);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("\n El jefe y el colaborador deben establecer un entendimiento compartido acerca de los objetivos (qué es lo"
                + " que hay que lograr) y de las competencias (cómo hacerlo).\n\nOBJETIVOS\n\n- Los objetivos responden a preguntas tales como:\n"
                + "     \t    ¿Cuáles son las expectativas claves de desempeño en ese puesto?\n     \t    ¿Qué debe lograr el puesto para cumplir"
                + " con los objetivos de orden superior?\n     \t    ¿Qué cosas tiene que hacer para apoyar el cumplimiento de los planes de negocio de este periodo?"
                + "\n\n- Se establecerán un mínimo de 3 y un máximo de 6 objetivos individuales anuales, los cuales estarán vinculados directamente"
                + " a los objetivos del área y se deberá limitar como máximo a 2 metas por cada objetivo.\n- Asimismo, se deberá consensuar los 2 o 3"
                + " objetivos organizacionales ya definidos de manera que no representen más de 6 metas por cada objetivo organizacional.\n\n- Idealmente,"
                + " el total de metas correspondientes a objetivos organizacionales e individuales no deberán exceder 12 metas.\n\n- Características de los"
                + " Objetivos (Regla 'MARTE')\n     \t    Mensurables: Resultados medibles u observables.\n     \t    Alcanzables: Parámetros alcanzables pero desafiantes.\n     \t"
                + "    Relevantes: Ser relevantes para el negocio.\n     \t    Temporales: Plazos definidos pautados en el tiempo.\n     \t    Específicos: Resultados específicos, frases"
                + " concisas y claras.\n\nCOMPETENCIAS\n\n- Las competencias son el conjunto de conocimientos, habilidades y actitudes que se traducen en comportamientos"
                + " concretos, fundamentales para el desempeño exitoso de una posición y el alcance de los objetivos establecidos.\n- Cada competencia"
                + " está compuesta por comportamientos que ayudarán a facilitar y estandarizar el concepto de cada competencia.\n- Las competencias han"
                + " sido definidas en base a los valores y pilares estratégicos de la organización, a su vez éstas se clasifican en competencias genéricas"
                + " (8 competencias) y gerenciales (3 competencias).\n\n\n- Participarán en este proceso de Evaluación de Desempeño los Colaboradores que"
                + " tengan 6 o más meses laborando en la Organización.\n ", font1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);
        return table;
    }

    /****************** EVALUACION DE COMPETENCIAS******************************/
        public PdfPTable createCabeceraCompetencias() throws DocumentException {
        PdfPTable table = new PdfPTable(6);
        table.setWidths(new int[]{4, 7, 4, 7, 4, 7});
        table.setWidthPercentage(100);
        table.setHorizontalAlignment(PdfPTable.ALIGN_LEFT);

        PdfPCell cell;

        Font font = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setFixedHeight(2f);
        cell.setColspan(6);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Nombre del Colaborador :", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        Font font2 = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase(formulario.getStrNom_Empleado()+" "+formulario.getStrApellido_Empleado(), font2));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Nombre del Jefe Directo :", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(evaluador.getStrName(), font2));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Área :", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(formulario.getStrArea_Empleado(), font2));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);


        //SEGUNDA FILA PARA DAR ESPACIO EN BLANCO ENTRE LAS DOS FILAS
        cell = new PdfPCell(new Phrase("", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setFixedHeight(3f);
        cell.setColspan(6);
        table.addCell(cell);

        //TERCERA FILA
        cell = new PdfPCell(new Phrase("Puesto :", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(formulario.getStrPuesto_Empleado(), font2));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Puesto :", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase(evaluador.getStrPuesto(), font2));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase("Periodo a Evaluar: :", font));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase("01/01/"+ periodo +" - 31/12/" + periodo, font2));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("", font2));
        cell.setFixedHeight(10f);
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(6);
        table.addCell(cell);
        
        return table;
    }

//    public PdfPTable createDetalleCompetencias() throws DocumentException, Exception {
//        BeanUserSub usuario = new BeanUserSub();
//        List<BeanPilar> lstpilares = new ArrayList<BeanPilar>();
//        List<BeanCompetencia> lstCompetencia = new ArrayList<BeanCompetencia>();
//        List<BeanCualificaciones> lstcuali = new ArrayList<BeanCualificaciones>();
//        //beanInfoEmpleado = evaluacionService.getInformacionUsuario(formulario.getStrID_EMPLEADO(), periodo);
//        double promedioCalificacion = 0.00;
//        StringBuilder competenciaAux = new StringBuilder();
//
//        //OBTENGO EL LISTADO DE SUBORDINADOS QUE TIENE EL EVALUADOR, HAGO ESTO PARA OBTENER LA POSICION DEL
//        //EVALUADO Y ASI OBTENER LOS PILARES Y COMPENTENCIAS
//        List<BeanUserSub> lstUsuario = UsuarioSubor.getLstUsuarioSubor(evaluador.getStrId_Posicion());
//        for (int i = 0; i < lstUsuario.size(); i++) {
//            BeanUserSub beanUserSub = lstUsuario.get(i);
//            if (beanUserSub.getStrIdEmpleado().equals(formulario.getStrID_EMPLEADO())) {
//                usuario = new BeanUserSub();
//                usuario = beanUserSub;
//            }
//        }
//
//        PdfPTable table = new PdfPTable(3);
//        table.setWidths(new int[]{9, 4, 4});
//        table.setWidthPercentage(100);
//
//        PdfPCell cell;
//
//        Font fontcabeceraTabla = new Font(CreateFont(), 7, Font.BOLD, BaseColor.BLACK);
//        Font fontcabeceraTabla1 = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
//        Font fontCompentencias = new Font(CreateFont(), 7, Font.BOLD, BaseColor.WHITE);
//        Font font = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
//
//        cell = new PdfPCell(new Phrase("", fontcabeceraTabla));
//        cell.setBorder(PdfPCell.NO_BORDER);
//        cell.setColspan(6);
//        table.addCell(cell);
//
//        cell = new PdfPCell(new Phrase("Competencias Genéricas", fontcabeceraTabla));
//        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
//        cell.setBackgroundColor(new BaseColor(228, 228, 228));
//        cell.setFixedHeight(16f);
//        cell.setColspan(6);
//        table.addCell(cell);
//
//        cell = new PdfPCell(new Phrase("Evalúe, marcando con una 'X', cada uno de los comportamientos descritos"
//                + " en una escala del 1 al 4, en donde: \n\n1- Demostró mínimamente:\nDemotró solo ocasionalmente"
//                + " alguno de los comportamientos relativos a la competencia evaluada. Requirió mucho apoyo y "
//                + "supervisión de sus superiores para modificar sus comportamientos habituales.\n2- Demostró parcialmente:\n"
//                + "Demostró con frecuencia algunos de los comportamientos relativos a la competencia evaluada, requiriendo"
//                + " intervenciones puntuales o algún apoyo por parte de sus superiores para modificar comportamientos"
//                + " o desarrollar las conductas esperadas.\n3- Demostró totalmente:\nDemostró en forma permanente y de manera"
//                + " espontánea la totalidad de los comportamientos relativos a la competencia evaluada. Alentó a otros a "
//                + "demostrarlos.\n4- Demostró de manera sobresaliente:\nDemostró en forma permanente y de manera espontánea la"
//                + " totalidad de los comportamientos relativos a la competencia evaluada y con frecuencia algunos"
//                + " de los comportamientos esperables para un nivel superior al suyo.\nAlentó a otros a demostrarlos. Son pocas"
//                + " las personas que logran este nivel de demostración de competencias y, cuando lo hacen, su aporte es reconocido"
//                + " claramente tanto en el grupo como en una población más amplia.\nNota:\n     Por favor, de ejemplos/evidencias que"
//                + " fundamenten la calificación otorgada.\n    ", fontcabeceraTabla1));
//        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
//        cell.setBackgroundColor(new BaseColor(255, 255, 255));
//        cell.setColspan(6);
//        table.addCell(cell);
//
//        //OBTENGO LAS LISTAS DE PILARES, COMPETENCIAS
//        System.out.println("Mi Evaluacion de competencias idEmpleado: " + formulario.getStrID_EMPLEADO() + " idFuncion: " + usuario.getStrID_Funcion() + " Periodo: " + periodo);
//        //----------------------Obtener el idFuncion por el ID_Empleado,Periodo
//        usuario.setStrID_Funcion(servicioCompetencia.getidFuncion(formulario.getStrID_EMPLEADO(), periodo,usuario.getStrID_Funcion()));
//        ////
//        System.out.println(" idFuncion: " + usuario.getStrID_Funcion());
//        
//        
//        lstpilares = servicioCompetencia.getPilaresCompetencia(usuario.getStrID_Funcion());
//        lstCompetencia = servicioCompetencia.getCompetenciasCompetencia(usuario.getStrID_Funcion());
//        lstcuali = servicioCompetencia.getCualificacionesCompetencia(usuario.getStrID_Funcion());
//        lstcuali = servicioCompetencia.getJustificacionesCompetencia(formulario.getStrID_EMPLEADO(), periodo, "0001", lstcuali);
//
//            for (BeanPilar pilar : lstpilares) {
//                for (BeanCualificaciones cuali : lstcuali) {
//                    if(pilar.getStrCod().equals(cuali.getStrID_Pilar_QK())){
//                        for (BeanCompetencia comp : lstCompetencia) {
//                            if(cuali.getStrid_Cualif_Q().equals(comp.getStrId_Cualificaciones_Q())){
//                                //Voy armando el StringBuilder
//                                if( (comp.getStrTline().charAt(0) == '*' ) ){
//                                    competenciaAux.append("\n");
//                                }
//                                competenciaAux.append(comp.getStrTline().trim()).append(" ");
//                            }
//                        }
//                        cuali.setStrDes_Competencia(competenciaAux); //tipo StringBuilder
//                        cuali.setDesc_competencia(competenciaAux.toString().trim()); // tipo String
//                        competenciaAux.delete(0, competenciaAux.length());
//                        cuali.setNumLineas(cuali.getDesc_competencia().toString().length()/50);
//                    }
//                }
//            }
//
//        for(BeanPilar beanPilar : lstpilares) {
//            if(!lstcuali.isEmpty()){                
//                cell = new PdfPCell(new Phrase("" + beanPilar.getStrDes(), fontCompentencias));
//                cell.setFixedHeight(18f);
//                cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
//                cell.setBackgroundColor(new BaseColor(0, 0, 0));
//                cell.setColspan(3);
//                table.addCell(cell);
//
//                for(BeanCualificaciones beanCualificaciones : lstcuali){
//
//                    if(beanCualificaciones.getStrID_Pilar_QK().equals(beanPilar.getStrCod())){
//                        cell = new PdfPCell(new Phrase("" + beanCualificaciones.getStrDes_Cualificaciones(), font));
//                        cell.setBackgroundColor(new BaseColor(228, 228, 228));
//                        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
//                        table.addCell(cell);
//
//                        cell = new PdfPCell(new Phrase("" + devuelveCalificacion(beanCualificaciones.getCalificacionJefe()), font));
//                        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
//                        cell.setBackgroundColor(new BaseColor(228, 228, 228));
//                        table.addCell(cell);
//
//                        cell = new PdfPCell(new Phrase("" + devuelveCalificacion(beanCualificaciones.getCalificacionColaborador()), font));
//                        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
//                        cell.setBackgroundColor(new BaseColor(228, 228, 228));
//                        table.addCell(cell);
//
//                        //Descripcion de las competencias
//                        cell = new PdfPCell(new Phrase("" + validarTexto(beanCualificaciones.getDesc_competencia()), font));
//                        cell.setBackgroundColor(new BaseColor(255, 255, 255));
//                        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
//                        table.addCell(cell);
//
//                        cell = new PdfPCell(new Phrase("" + validarTexto(beanCualificaciones.getStrjusti_jefe()), font));
//                        cell.setBackgroundColor(new BaseColor(255, 255, 255));
//                        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
//                        table.addCell(cell);
//
//                        cell = new PdfPCell(new Phrase("" + validarTexto(beanCualificaciones.getStrjusti_colab()), font));
//                        cell.setBackgroundColor(new BaseColor(255, 255, 255));
//                        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
//                        table.addCell(cell);
//
//                        //Obtengo el promedio de calificacion del Evaluador
//                        promedioCalificacion += beanCualificaciones.getCalificacionJefe();
//                    }
//                }
//            }
//        }
//
//        Font font3 = new Font(CreateFont(), 9, Font.BOLD, BaseColor.BLACK);
//        cell = new PdfPCell(new Phrase("Puntuación Final\n(Promedio)", font3));
//        cell.setBackgroundColor(new BaseColor(228, 228, 228));
//        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
//        cell.setBorder(PdfPCell.NO_BORDER);
//        table.addCell(cell);
//
//        cell = new PdfPCell(new Phrase("" + Util.AgregarCeros(Redondear2Decimales(promedioCalificacion/lstcuali.size()))+ "   ", font3));
//        cell.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT);
//        cell.setBackgroundColor(new BaseColor(228, 228, 228));
//        cell.setBorder(PdfPCell.NO_BORDER);
//        table.addCell(cell);
//
//        cell = new PdfPCell(new Phrase("", font3));
//        cell.setBorder(PdfPCell.NO_BORDER);
//        cell.setBackgroundColor(new BaseColor(228, 228, 228));
//        table.addCell(cell);
//        return table;
//    }
    
    public PdfPTable createDetalleCompetencias() throws DocumentException, Exception {
    	List<BeanCompetencia> lstCompetencia = null;
        List<BeanCompetencia> lstConsultaCompetencia = null;
        
        String codCompetencia="", codComportamiento="";
        String otrasFortalezas="";
        String otrasOportunidades="";
        String comentariosRevisor="";
        String codigoFortaleza1="", codigoFortaleza2="", forta1="", forta2="";
        String codigoOportunidades1="", codigoOportunidades2="", oportunidad1="", oportunidad2="";
        
        lstCompetencia = servicioCompetencia.getNuevaCompetencia(formulario.getStrID_EMPLEADO(), periodo);
    	lstConsultaCompetencia = servicioCompetencia.consultaNuevaCompetencia(formulario.getStrID_EMPLEADO(), periodo, Constantes.VERSION_POTENCIAL);
    	
    	for (BeanCompetencia bean : lstCompetencia) {
    		codCompetencia= bean.getCodCabecera();
    		codComportamiento= bean.getCodDetalle();
    		bean.setResultadoCadena1("");
    		
    		for (BeanCompetencia consultaBean : lstConsultaCompetencia) {
    			if (codCompetencia.equals(consultaBean.getCodCabecera()) && codComportamiento.equals(consultaBean.getCodDetalle())) {
    				bean.setOpcionSeleccionado1(consultaBean.getOpcionSeleccionado1());
    				bean.setOpcionSeleccionado2(consultaBean.getOpcionSeleccionado2());
				}
    			if (consultaBean.getTipo()!=null && consultaBean.getTipo().equals("OTRASFORTALEZAS")) 
					otrasFortalezas=consultaBean.getDescripcion();
    			
    			if (consultaBean.getTipo()!=null && consultaBean.getTipo().equals("T_OTRASOPORTUNIDADES")) 
    				otrasOportunidades=consultaBean.getDescripcion();
    			
    			if (consultaBean.getTipo()!=null && consultaBean.getTipo().equals("T_COMENTARIOSREVISOR")) 
    				comentariosRevisor=consultaBean.getDescripcion();
    			
    			if (consultaBean.getTipo()!=null && consultaBean.getTipo().equals("T_COMPET_JUSTI") && codCompetencia.equals(consultaBean.getCodCabecera())) 
    				bean.setResultadoCadena1(consultaBean.getDescripcion());
    			
    			if (consultaBean.getTipo()!=null && consultaBean.getTipo().equals("T_COMPET_FORTALEZA1")) {
    				codigoFortaleza1=consultaBean.getCodCabecera();
    				forta1= consultaBean.getDescripcion();
    			}
    			if (consultaBean.getTipo()!=null && consultaBean.getTipo().equals("T_COMPET_FORTALEZA2")) {
    				codigoFortaleza2=consultaBean.getCodCabecera();
    				forta2= consultaBean.getDescripcion();
    			}

    			if (consultaBean.getTipo()!=null && consultaBean.getTipo().equals("T_COMPET_OPORTUNIDAD1")) {
    				codigoOportunidades1=consultaBean.getCodCabecera();
    				oportunidad1= consultaBean.getDescripcion();
    			}
    			if (consultaBean.getTipo()!=null && consultaBean.getTipo().equals("T_COMPET_OPORTUNIDAD2")) {
    				codigoOportunidades2=consultaBean.getCodCabecera();
    				oportunidad2= consultaBean.getDescripcion();
    			}
    		} 
        }

        PdfPTable table = new PdfPTable(4);
        table.setWidths(new int[]{8, 4, 4, 5});
        table.setWidthPercentage(100);

        int numeroDetallesXCompetencia = 0;
        boolean pintoJustificacion = false;
        double promedioFinalEvaluador = 0.0;
        double promedioFinalEvaluado = 0.0;
        double promedioEvaluador = 0.0;
        double promedioEvaluado = 0.0;
        int contadorCalificacionEvaluador = 0;
        int contadorCalificacionEvaluado = 0;
        
        Image imagen;
        String fs = File.separator;
        String ruta = getServletContext().getRealPath(fs);
                
        PdfPCell cell;

        Font fontcabeceraTabla = new Font(CreateFont(), 7, Font.BOLD, BaseColor.BLACK);
        Font fontcabeceraTabla1 = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        Font fontCompentencias = new Font(CreateFont(), 7, Font.BOLD, BaseColor.WHITE);
        Font font = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);

        cell = new PdfPCell(new Phrase("", fontcabeceraTabla));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setFixedHeight(10f);
        cell.setColspan(4);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Competencias Genéricas", fontcabeceraTabla));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setBackgroundColor(new BaseColor(228, 228, 228));
        cell.setFixedHeight(16f);
        cell.setColspan(4);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Evalúe, marcando con una 'X', cada uno de los comportamientos descritos"
                + " en una escala del 1 al 4, en donde: \n\n1- Demostró mínimamente:\nDemotró solo ocasionalmente"
                + " alguno de los comportamientos relativos a la competencia evaluada. Requirió mucho apoyo y "
                + "supervisión de sus superiores para modificar sus comportamientos habituales.\n2- Demostró parcialmente:\n"
                + "Demostró con frecuencia algunos de los comportamientos relativos a la competencia evaluada, requiriendo"
                + " intervenciones puntuales o algún apoyo por parte de sus superiores para modificar comportamientos"
                + " o desarrollar las conductas esperadas.\n3- Demostró totalmente:\nDemostró en forma permanente y de manera"
                + " espontánea la totalidad de los comportamientos relativos a la competencia evaluada. Alentó a otros a "
                + "demostrarlos.\n4- Demostró de manera sobresaliente:\nDemostró en forma permanente y de manera espontánea la"
                + " totalidad de los comportamientos relativos a la competencia evaluada y con frecuencia algunos"
                + " de los comportamientos esperables para un nivel superior al suyo.\nAlentó a otros a demostrarlos. Son pocas"
                + " las personas que logran este nivel de demostración de competencias y, cuando lo hacen, su aporte es reconocido"
                + " claramente tanto en el grupo como en una población más amplia.\nNota:\n     Por favor, de ejemplos/evidencias que"
                + " fundamenten la calificación otorgada.\n    ", fontcabeceraTabla1));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setColspan(4);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("", fontcabeceraTabla));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setFixedHeight(10f);
        cell.setColspan(4);
        table.addCell(cell);
        
        //CREO LOS TITULOS DE LAS COLUMNAS
        cell = new PdfPCell(new Phrase("COMPETENCIA GENÉRICA", fontcabeceraTabla));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);        
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("EVALUACIÓN DEL JEFE", fontcabeceraTabla));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("AUTOEVALUACIÓN", fontcabeceraTabla));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase("JUSTIFICACIÓN AUTOEVALUACIÓN", fontcabeceraTabla));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);
        
        //CREO EL DETALLE
        for(BeanCompetencia beanCompetencia : lstCompetencia) {
        	if(beanCompetencia.getTipo().equals("C")){
        		//numeroDetallesXCompetencia = beanCompetencia.getNumeroFilaDetalle();
        		pintoJustificacion = false;
        		
        		cell = new PdfPCell(new Phrase("" + beanCompetencia.getDescripcion(), fontCompentencias));
                cell.setBackgroundColor(new BaseColor(0, 0, 0));
                cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
                table.addCell(cell);
                
                promedioEvaluador = devolverPromedioEvaluacion(lstCompetencia, beanCompetencia.getCodCabecera(), 1);
                promedioEvaluado = devolverPromedioEvaluacion(lstCompetencia, beanCompetencia.getCodCabecera(), 2);
                
                if(promedioEvaluador > 0){
                	promedioFinalEvaluador = promedioFinalEvaluador + promedioEvaluador;
                	contadorCalificacionEvaluador++;
                }
                
                if(promedioEvaluado > 0){
                	promedioFinalEvaluado = promedioFinalEvaluado + promedioEvaluado;
                	contadorCalificacionEvaluado++;
                }
                
                cell = new PdfPCell(new Phrase("" + convertirAString(promedioEvaluador), fontCompentencias));
                cell.setBackgroundColor(new BaseColor(0, 0, 0));
                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                table.addCell(cell);
                
                cell = new PdfPCell(new Phrase("" + convertirAString(promedioEvaluado), fontCompentencias));
                cell.setBackgroundColor(new BaseColor(0, 0, 0));
                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                table.addCell(cell);
                
                cell = new PdfPCell(new Phrase("", fontCompentencias));
                cell.setBackgroundColor(new BaseColor(0, 0, 0));
                table.addCell(cell);
        	}
        	else if(beanCompetencia.getTipo().equals("D")){
        		numeroDetallesXCompetencia = beanCompetencia.getNumeroFilaDetalle();
        		
        		cell = new PdfPCell(new Phrase("" + beanCompetencia.getDescripcion(), font));
    			cell.setHorizontalAlignment(PdfCell.ALIGN_JUSTIFIED);
                cell.setBackgroundColor(new BaseColor(255, 255, 255));
                table.addCell(cell);
                
                imagen = Image.getInstance(ruta + "images" + fs + devolverNombreImagen(beanCompetencia.getOpcionSeleccionado1()));
                imagen.scalePercent(50.0f);
                //PARA CENTRAR LA IMAGEN
                imagen.setAlignment(Image.ALIGN_MIDDLE);
                
                cell = new PdfPCell();
                cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
                cell.addElement(imagen);
                table.addCell(cell);
                
                imagen = Image.getInstance(ruta + "images" + fs + devolverNombreImagen(beanCompetencia.getOpcionSeleccionado2()));
                imagen.scalePercent(50.0f);
                //PARA CENTRAR LA IMAGEN
                imagen.setAlignment(Image.ALIGN_MIDDLE);
                
                cell = new PdfPCell();
                cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(PdfPCell.ALIGN_MIDDLE);
                cell.addElement(imagen);
                table.addCell(cell);
                
                if(pintoJustificacion == false){
	                cell = new PdfPCell(new Phrase("" + validarTexto(beanCompetencia.getResultadoCadena1()), font));
	    			cell.setHorizontalAlignment(PdfCell.ALIGN_JUSTIFIED);
	                cell.setBackgroundColor(new BaseColor(255, 255, 255));
	                cell.setRowspan(numeroDetallesXCompetencia);
	                table.addCell(cell);
	                //INICIALIZO LAS VARIABLES
	                numeroDetallesXCompetencia = 0;
	                pintoJustificacion = true;
                }
        	}
        }

        Font font3 = new Font(CreateFont(), 9, Font.BOLD, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("Puntuación Final ", font3));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        if(contadorCalificacionEvaluador > 0){
        	promedioFinalEvaluador = Redondear1Decimal(promedioFinalEvaluador/contadorCalificacionEvaluador);        	
        }
        
        if(contadorCalificacionEvaluado > 0){
        	promedioFinalEvaluado = Redondear1Decimal(promedioFinalEvaluado/contadorCalificacionEvaluado);
        }
        
        cell = new PdfPCell(new Phrase("" + promedioFinalEvaluador, font3));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase("" + promedioFinalEvaluado, font3));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("", font3));
        cell.setBorder(PdfPCell.NO_BORDER);
        table.addCell(cell);
        
        //SE CREA LAS FORTALEZAS, OPORTUNIDADES
        Font fontBlanco = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.WHITE);
        Font fontNegro = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        
        cell = new PdfPCell(new Phrase("", fontNegro));
        cell.setFixedHeight(10f);
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(4);
        table.addCell(cell);
                
        cell = new PdfPCell(new Phrase("Evaluación Final: Mencione a continuación las fortalezas y oportunidades de mejora de su colaborador," +
        		" expresando los comentarios que considere oportunos.", fontBlanco));
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase("FORTALEZAS", fontNegro));
        cell.setBackgroundColor(new BaseColor(249, 184, 20));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        //Falta lista de las 2 competencias     
        cell = new PdfPCell(new Phrase("1. " + devolverNombreCompetencia(lstCompetencia, codigoFortaleza1), fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase(" " + validarTexto(forta1), fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase("2. "  + devolverNombreCompetencia(lstCompetencia, codigoFortaleza2), fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase(" "  + validarTexto(forta2), fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase("Otras Fortalezas:", fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase(" " + validarTexto(otrasFortalezas), fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase("OPORTUNIDADES DE MEJORA", fontNegro));
        cell.setBackgroundColor(new BaseColor(249, 184, 20));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        //Falta lista de las 2 competencias
        cell = new PdfPCell(new Phrase("1. " + devolverNombreCompetencia(lstCompetencia, codigoOportunidades1), fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase(" " + validarTexto(oportunidad1), fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase("2. " + devolverNombreCompetencia(lstCompetencia, codigoOportunidades2), fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase(" " + validarTexto(oportunidad2), fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase("Otras Oportunidades de Mejora:", fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase(" " + validarTexto(otrasOportunidades), fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase(" ", fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase("Comentarios del revisor.", fontBlanco));
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        cell.setColspan(4);
        table.addCell(cell);
        
        cell = new PdfPCell(new Phrase(" " + validarTexto(comentariosRevisor), fontNegro));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cell.setColspan(4);
        table.addCell(cell);
        
        return table;
    }

    private String validarTexto(String desc_competencia) {
        return desc_competencia.replace("@", "\n");
    }

    public double Redondear2Decimales(double dblnum) {
        double numero = dblnum * 100;
        numero = Math.round(numero);
        dblnum = numero / 100;
        return dblnum;
    }

    /**************** EVALUACION INTEGRAL **********************/
    public PdfPTable createDetalleEvaluacionIntegral() throws DocumentException, Exception {
        BeanIntegral beanIntegral = new BeanIntegral();
        BeanCalificaciones beanCalificaciones = new BeanCalificaciones();

        beanIntegral = integralService.getComentariosIntegral(formulario.getStrID_EMPLEADO(), periodo, "0001");
        beanCalificaciones = integralService.leerCalificacionIntegral(formulario.getStrID_EMPLEADO(), periodo, beanInfoEmpleado.getStrIdVersion());
        beanIntegral.setNivelEC(beanCalificaciones.getNivelEC());
        beanIntegral.setNivelED(beanCalificaciones.getNivelED());
        beanIntegral.setNivelEO(beanCalificaciones.getNivelEO());
        beanIntegral.setNivelEDRedondeado(Util.formatearANingunDecimalSimple(beanIntegral.getNivelED()));

        PdfPTable table = new PdfPTable(2);
        table.setWidths(new int[]{4, 6});
        table.setWidthPercentage(100);

        PdfPCell cell;
        Font fontcabeceraTabla = new Font(CreateFont(), 7, Font.BOLD, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("", fontcabeceraTabla));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(2);
        table.addCell(cell);

        Font font;
        font = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("CALIFICACIÓN FINAL (80% objetivos y 20% competencias)", fontcabeceraTabla));
        cell.setBackgroundColor(new BaseColor(228, 228, 228));
        cell.setColspan(2);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setFixedHeight(18f);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Escala: 1- Desempeño no aceptable    2- Desempeño a mejorar    3- Desempeño efectivo    4- Desempeño excelente", fontcabeceraTabla));
        cell.setBackgroundColor(new BaseColor(228, 228, 228));
        cell.setFixedHeight(18f);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setColspan(2);
        table.addCell(cell);

        //AGREGO LOS PROMEDIOS DE LA EVALUACION DE OBJETIVOS Y DE COMPETENCIAS
        if(!beanIntegral.getNivelEO().equals("")){
            cell = new PdfPCell(new Phrase("Evaluación de Objetivos: " + beanIntegral.getNivelEO() +"\nEvaluación de Competencias: " + beanIntegral.getNivelEC() + "\n\nEvaluación de Desempeño: " + beanIntegral.getNivelED(), font));
        }
        else{
            cell = new PdfPCell(new Phrase("Evaluación de Objetivos:             Evaluación de Competencias:               Evaluación de Desempeño:  ", font));
        }

        cell.setBackgroundColor(new BaseColor(Color.WHITE));
        cell.setColspan(2);
        table.addCell(cell);

        font = new Font(CreateFont(), 8, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("Comentarios del Evaluador: Sintetice su apreciación general sobre el evaluado "
                + "teniendo en cuenta los resultados alcanzados y el análisis de las competencias.", fontcabeceraTabla));
        cell.setBackgroundColor(new BaseColor(228, 228, 228));
        cell.setColspan(2);
        cell.setFixedHeight(18f);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("" + validarTexto(beanIntegral.getComentarioEvaluador()), font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setColspan(2);
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Comentarios del Evaluado: Exprese las consideraciones que estime oportunas.", fontcabeceraTabla));
        cell.setBackgroundColor(new BaseColor(228, 228, 228));
        cell.setFixedHeight(18f);
        cell.setColspan(2);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("" + validarTexto(beanIntegral.getComentarioEvaluado()), font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setColspan(2);

        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Comentarios del Revisor: Exprese las consideraciones que estime oportunas.", fontcabeceraTabla));
        cell.setBackgroundColor(new BaseColor(228, 228, 228));
        cell.setFixedHeight(18f);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setColspan(2);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("" + validarTexto(beanIntegral.getComentarioRevisor()), font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setColspan(2);
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Firmas del Proceso de Gestión de Desempeño.", fontcabeceraTabla));
        cell.setBackgroundColor(new BaseColor(228, 228, 228));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setFixedHeight(18f);
        cell.setColspan(2);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Firma del Evaluado: ........................................         Fecha:      /     /   ", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setColspan(2);
        cell.setFixedHeight(20f);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Firma del Evaluador: ......................................         Fecha:      /     /   ", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setColspan(2);
        cell.setFixedHeight(20f);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Firma del Revisor: ..........................................         Fecha:      /     /   ", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setColspan(2);
        cell.setFixedHeight(20f);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Nota: Cuando finalize el proceso enviar el original a Recursos Humanos, el Evaluador y el Evaluado deben quedarse con una copia cada uno.", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setFixedHeight(20f);
        cell.setColspan(2);
        table.addCell(cell);

        return table;
    }

        /*********** PLAN DE ACCION *******************/
    public PdfPTable createDetallePlanAccion() throws DocumentException, Exception {
        List<BeanPlanAccion> lstPlanAccion = new ArrayList<BeanPlanAccion>();
        PlanAccionSapService_I planAccionService = PaqueteBusinessDelegate.getPlanAccionSapService_I();
        BeanAcciones beanAcciones = new BeanAcciones();
        BeanMovilidad beanMovilidad = new BeanMovilidad();
        String fs = File.separator;
        String ruta = getServletContext().getRealPath(fs);
        String tipoMovilidad;

        lstPlanAccion = planAccionService.leerPlanAccion(formulario.getStrID_EMPLEADO(), periodo, "0001");

        if(lstPlanAccion != null){
            for (BeanPlanAccion beanPlanAccion : lstPlanAccion) {
                if(beanPlanAccion.getCodigo().equals("01")){
                    if(beanPlanAccion.getCorrelativo().equals("01")){
                        beanAcciones.setObjDesarrollo1(beanPlanAccion.getTexto());
                    }
                    else{
                        if(beanPlanAccion.getCorrelativo().equals("02")){
                            beanAcciones.setObjDesarrollo2(beanPlanAccion.getTexto());
                        }
                        else{
                            beanAcciones.setObjDesarrollo3(beanPlanAccion.getTexto());
                        }
                     }
                }
                else{
                    if(beanPlanAccion.getCodigo().equals("02")){
                        if(beanPlanAccion.getCorrelativo().equals("01")){
                            beanAcciones.setAspDesarrollo1(beanPlanAccion.getTexto());
                        }
                        else{
                            if(beanPlanAccion.getCorrelativo().equals("02")){
                                beanAcciones.setAspDesarrollo2(beanPlanAccion.getTexto());
                            }
                            else{
                                beanAcciones.setAspDesarrollo3(beanPlanAccion.getTexto());
                            }
                        }
                    }else{// SI ES CODIGO 03
                    	if(beanPlanAccion.getCodigo().equals("03")){
	                        if(beanPlanAccion.getCorrelativo().equals("01")){
	                            beanAcciones.setEjeAccion1(beanPlanAccion.getTexto());
	                        }
	                        else{
	                            if(beanPlanAccion.getCorrelativo().equals("02")){
	                                beanAcciones.setEjeAccion2(beanPlanAccion.getTexto());
	                            }
	                        }
                    	}else{
                    		if(beanPlanAccion.getCodigo().equals("333")){
                    			beanMovilidad.setMovilidadUnidadOperativa(beanPlanAccion.getCorrelativo());
                    			beanMovilidad.setPreferenciaUnidadOperativa(beanPlanAccion.getTexto());
                    		}
                    		else{
                    			if(beanPlanAccion.getCodigo().equals("444")){
                    				//System.out.println("El tipo de movimientoPais es: " + beanPlanAccion.getCorrelativo() + " y el texto es: |" + beanPlanAccion.getTexto()+ "|");
                        			beanMovilidad.setMovilidadPais(beanPlanAccion.getCorrelativo());
                        			beanMovilidad.setPreferenciaPais(beanPlanAccion.getTexto());
                    			}
                    		}
                    	}
                    }
                }
            }
        }

        PdfPTable table = new PdfPTable(2);
        table.setWidths(new int[]{1, 30});
        table.setWidthPercentage(100);

        PdfPCell cell;
        Font font;
        Font font2 = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.WHITE);
        font = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);

        cell = new PdfPCell(new Phrase("", font2));
        cell.setBorder(PdfPCell.NO_BORDER);
        cell.setColspan(2);
        table.addCell(cell);

        //ASPECTOS A DESARROLLAR
        cell = new PdfPCell(new Phrase("Aspectos a Desarrollar (En base a Evaluación de Desempeño actual y Proyectos futuros)", font2));
        cell.setColspan(2);
        cell.setFixedHeight(18f);
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        table.addCell(cell);

        font = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("1.", font));
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("" + validarTexto(beanAcciones.getObjDesarrollo1()), font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("2.", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("" + validarTexto(beanAcciones.getObjDesarrollo2()), font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("3.", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("" + validarTexto(beanAcciones.getObjDesarrollo3()), font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);

        //ACCIONES A TOMAR
        font = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("Acciones a tomar: (Ejemplos: formación en: habilidades de gestión, idiomas, conocimientos del negocio y la industria, " +
        		"conocimientos técnicos; equipos especiales de trabajo; traslados y rotaciones, etc.)", font2));
        cell.setColspan(2);
        cell.setFixedHeight(18f);
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        table.addCell(cell);

        font = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("1.", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("" + validarTexto(beanAcciones.getAspDesarrollo1()), font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("2.", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("" + validarTexto(beanAcciones.getAspDesarrollo2()), font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("3.", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("" + validarTexto(beanAcciones.getAspDesarrollo3()), font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);

        //INTERESES Y ADVERSIONES DE CARRERA        
        font = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("Intereses y Aversiones de Carrera (Responde a las aspiraciones del colaborador, por ejemplo: crecer en el área actual o" +
        		" cambiar de área, qué área no le interesaría conocer)", font2));
        cell.setColspan(2);
        cell.setFixedHeight(18f);
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        table.addCell(cell);

        font = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("1.", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("" + validarTexto(beanAcciones.getEjeAccion1()), font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("2.", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("" + validarTexto(beanAcciones.getEjeAccion2()), font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);
/*
        cell = new PdfPCell(new Phrase("3.", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("" + beanAcciones.getEjeAccion3(), font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED);
        table.addCell(cell);
  */
        
        //MOVILIDAD
        //font = new Font(CreateFont(), 7, Font.NORMAL, BaseColor.BLACK);
        cell = new PdfPCell(new Phrase("Movilidad", font2));
        cell.setColspan(2);
        cell.setBackgroundColor(new BaseColor(0, 0, 0));
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("1.", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

		//PRUEBA
        PdfPTable tableaAux = new PdfPTable(1);
        tableaAux.setWidths(new int[]{1});
        tableaAux.setWidthPercentage(100);

        PdfPCell cellAux;
        //Ingreso la primera fila
        cellAux = new PdfPCell(new Phrase("Movilidad a Unidad Operativa", font));
        cellAux.setBackgroundColor(new BaseColor(255, 255, 255));
        cellAux.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cellAux.setBorder(PdfPCell.NO_BORDER);
        tableaAux.addCell(cellAux);
        /*
        if(beanMovilidad.getMovilidadUnidadOperativa().equals("S")) tipoMovilidad = "SI";
    	else tipoMovilidad = "NO";

        cellAux = new PdfPCell(new Phrase(tipoMovilidad, font));
        cellAux.setBackgroundColor(new BaseColor(255, 255, 255));
        cellAux.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT);
        cellAux.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cellAux.setBorder(PdfPCell.NO_BORDER);
        tableaAux.addCell(cellAux);
*/
        try {
        	if(beanMovilidad.getMovilidadUnidadOperativa().equals("S")){
	            Image foto1 = Image.getInstance(ruta + "images" + fs + "seleccionadoSI.jpg");
	            foto1.scalePercent(50.0f);
	            //PARA CENTRAR LA IMAGEN
	            foto1.setAlignment(Image.ALIGN_LEFT);
	            cellAux = new PdfPCell();
	            cellAux.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
	            //cellAux.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
	            cellAux.setBorder(PdfPCell.NO_BORDER);
	            //cellAux.setColspan(2);
	            cellAux.addElement(foto1);
	            //cellAux.setFixedHeight(300f);
	            tableaAux.addCell(cellAux);
        	}else{
            	if(beanMovilidad.getMovilidadUnidadOperativa().equals("N")){
    	            Image foto1 = Image.getInstance(ruta + "images" + fs + "seleccionadoNO.jpg");
    	            foto1.scalePercent(50.0f);
    	            //PARA CENTRAR LA IMAGEN
    	            foto1.setAlignment(Image.ALIGN_LEFT);
    	            cellAux = new PdfPCell();
    	            cellAux.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    	            //cellAux.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
    	            cellAux.setBorder(PdfPCell.NO_BORDER);
    	            //cellAux.setColspan(2);
    	            cellAux.addElement(foto1);
    	            //cellAux.setFixedHeight(300f);
    	            tableaAux.addCell(cellAux);
            	}
        	}
        } catch (Exception e) {
            e.printStackTrace();
        }

	        cellAux = new PdfPCell(new Phrase("Preferencias:", font));
	        cellAux.setBackgroundColor(new BaseColor(255, 255, 255));
	        cellAux.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
	        cellAux.setBorder(PdfPCell.NO_BORDER);
	        tableaAux.addCell(cellAux);
	
	        cellAux = new PdfPCell(new Phrase(validarTexto(beanMovilidad.getPreferenciaUnidadOperativa()), font));
	        cellAux.setBackgroundColor(new BaseColor(255, 255, 255));
	        cellAux.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
	        cellAux.setBorder(PdfPCell.NO_BORDER);
	        tableaAux.addCell(cellAux);


        table.addCell(tableaAux);

		//PRUEBA        

        cell = new PdfPCell(new Phrase("2.", font));
        cell.setBackgroundColor(new BaseColor(255, 255, 255));
        cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        table.addCell(cell);

        PdfPTable tableaAux1 = new PdfPTable(1);
        tableaAux1.setWidths(new int[]{1});
        tableaAux1.setWidthPercentage(100);

        cellAux = new PdfPCell(new Phrase("Movilidad a Otro País", font));
        cellAux.setBackgroundColor(new BaseColor(255, 255, 255));
        cellAux.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
        cellAux.setBorder(PdfPCell.NO_BORDER);
        tableaAux1.addCell(cellAux);
/*
        if(beanMovilidad.getMovilidadPais().equals("S")) tipoMovilidad = "SI";
    	else tipoMovilidad = "NO";
        
        cellAux = new PdfPCell(new Phrase(tipoMovilidad, font));
        cellAux.setBackgroundColor(new BaseColor(255, 255, 255));
        cellAux.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT);
        cellAux.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
        cellAux.setBorder(PdfPCell.NO_BORDER);
        tableaAux1.addCell(cellAux);
*/
        try {
        	if(beanMovilidad.getMovilidadPais().equals("S")){
            Image foto1 = Image.getInstance(ruta + "images" + fs + "seleccionadoSI.jpg");
            foto1.scalePercent(50.0f);
            //PARA CENTRAR LA IMAGEN
            foto1.setAlignment(Image.ALIGN_LEFT);
            cellAux = new PdfPCell();
            cellAux.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
            //cellAux.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
            cellAux.setBorder(PdfPCell.NO_BORDER);
            //cellAux.setColspan(2);
            cellAux.addElement(foto1);
            //cellAux.setFixedHeight(300f);
            tableaAux1.addCell(cellAux);
        	}else{
            	if(beanMovilidad.getMovilidadPais().equals("N")){
                    Image foto1 = Image.getInstance(ruta + "images" + fs + "seleccionadoNO.jpg");
                    foto1.scalePercent(50.0f);
                    //PARA CENTRAR LA IMAGEN
                    foto1.setAlignment(Image.ALIGN_LEFT);
                    cellAux = new PdfPCell();
                    cellAux.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
                    //cellAux.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
                    cellAux.setBorder(PdfPCell.NO_BORDER);
                    //cellAux.setColspan(2);
                    cellAux.addElement(foto1);
                    //cellAux.setFixedHeight(300f);
                    tableaAux1.addCell(cellAux);
                	}
        	}
        } catch (Exception e) {
            e.printStackTrace();
        }

            cellAux = new PdfPCell(new Phrase("Preferencias:", font));
            cellAux.setBackgroundColor(new BaseColor(255, 255, 255));
            cellAux.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
            cellAux.setBorder(PdfPCell.NO_BORDER);
            tableaAux1.addCell(cellAux);

            cellAux = new PdfPCell(new Phrase(validarTexto(beanMovilidad.getPreferenciaPais()), font));
            cellAux.setBackgroundColor(new BaseColor(255, 255, 255));
            cellAux.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
            cellAux.setBorder(PdfPCell.NO_BORDER);
            tableaAux1.addCell(cellAux);

        table.addCell(tableaAux1);        
        
        return table;
    }

    public BaseFont CreateFont() {
        BaseFont arial = null;
        String fs = File.separator;
        String ruta = getServletContext().getRealPath(fs);

        try {
            arial = BaseFont.createFont(ruta + "fuente" + fs + "arial.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return arial;
    }
    
    private double devolverPromedioEvaluacion (List<BeanCompetencia> lstCompetencia, String idCabecera, int tipo){
    	int numeroDetalleXCabecera = 0;
    	double promedio = 0.0;
    	
    	if(!lstCompetencia.isEmpty()){
    		if(tipo == 1){
	    		for (BeanCompetencia beanCompetencia : lstCompetencia) {
					if(beanCompetencia.getTipo().equals("D")){
						if(beanCompetencia.getCodCabecera().equals(idCabecera)){
							if(beanCompetencia.getOpcionSeleccionado1() != null && beanCompetencia.getOpcionSeleccionado1() != "0"){
								promedio = promedio + Double.parseDouble(beanCompetencia.getOpcionSeleccionado1());
								numeroDetalleXCabecera ++;
							}
						}
					}
				}
	    		
	    		if(numeroDetalleXCabecera != 0){
	    			promedio = Redondear1Decimal(promedio/numeroDetalleXCabecera);
	    		}
    		}
    		else{
    			for (BeanCompetencia beanCompetencia : lstCompetencia) {
					if(beanCompetencia.getTipo().equals("D")){
						if(beanCompetencia.getCodCabecera().equals(idCabecera)){
							if(beanCompetencia.getOpcionSeleccionado2() != null && beanCompetencia.getOpcionSeleccionado2() != "0"){
								promedio = promedio + Double.parseDouble(beanCompetencia.getOpcionSeleccionado2());
								numeroDetalleXCabecera ++;
							}
						}
					}
				}
    			
    			if(numeroDetalleXCabecera != 0){
	    			promedio = Redondear1Decimal(promedio/numeroDetalleXCabecera);
	    		}
    		}
    	}
    	
    	return promedio;
    }
    
    public double Redondear1Decimal(double dblnum) {
        double numero = dblnum * 10;
        numero = Math.round(numero);
        dblnum = numero / 10;
        return dblnum;
    }
    
    private String devolverNombreImagen(String opcionSeleccionada){
		if(opcionSeleccionada != null){
			if(!opcionSeleccionada.equals("")){
				if(opcionSeleccionada.equals("0")){
					return "sinSeleccionar.jpg";
				}
				else{
					return "seleccionado" + opcionSeleccionada + ".jpg";
				}
			}
			else{
				return "sinSeleccionar.jpg";
			}
		}
		else{
			return "sinSeleccionar.jpg";
		}
	}
    
    private String devolverNombreCompetencia(List<BeanCompetencia> lstCompetencia, String idCabecera){    	
    	if(!lstCompetencia.isEmpty()){
    		for (BeanCompetencia beanCompetencia : lstCompetencia) {
				if(beanCompetencia.getTipo().equals("C")){
					if(beanCompetencia.getCodCabecera().equals(idCabecera)){
						return beanCompetencia.getDescripcion();
					}
				}
			}
    	}
    	
    	return "";
    }
    
    private String convertirAString(double promedio){
    	if(promedio > 0){
    		return String.valueOf(promedio);
    	}
    	else{
    		return "";
    	}
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    	System.out.println("Imprimir Reporte Consolidado doget");
        try {
            periodo = request.getParameter("periodo").toString();
            processRequest(request, response);
        } catch (DocumentException ex) {
            Logger.getLogger(ImprimirReporteConsolidado.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    	System.out.println("Imprimir Reporte Consolidado dopost");
        try {
            processRequest(request, response);
        } catch (DocumentException ex) {
            Logger.getLogger(ImprimirReporteConsolidado.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
